# 学生数据
table_data = [
    {"序号": "1", "学号": "2123310401", "姓名": "陈福强", "性别": "男", "年龄": "18", "身份证号": "469*************8918", "电话号码": "152****0858", "家庭地址": "海南省儋州市南建路地址农场桥南路11号"},
    {"序号": "2", "学号": "2123310402", "姓名": "陈汉宇", "性别": "女", "年龄": "18", "身份证号": "460*************8022", "电话号码": "188****1261", "家庭地址": "海南省临高县东英镇东英安全十八队"},
    {"序号": "3", "学号": "2123310403", "姓名": "陈双成", "性别": "男", "年龄": "19", "身份证号": "460*************6835", "电话号码": "189****2985", "家庭地址": "海南省临高县白沙滩乡咸罗金波路院路62号"},
    {"序号": "4", "学号": "2123310404", "姓名": "陈松", "性别": "男", "年龄": "18", "身份证号": "220*************0017", "电话号码": "182****4632", "家庭地址": "吉林省松原市长岭县大兴镇大兴村"},
    {"序号": "5", "学号": "2123310405", "姓名": "陈世杰", "性别": "男", "年龄": "20", "身份证号": "460*************9617", "电话号码": "138****9328", "家庭地址": "海南省海口市美兰区海府路101-3号"},
    {"序号": "6", "学号": "2123310406", "姓名": "陈宗隆", "性别": "男", "年龄": "16", "身份证号": "460*************001X", "电话号码": "175****7120", "家庭地址": "海南省儋州市那大镇学的美院603号"},
    {"序号": "7", "学号": "2123310407", "姓名": "方景涛", "性别": "男", "年龄": "29", "身份证号": "460*************0114", "电话号码": "183****9810", "家庭地址": "海南省三亚市吉阳区风村到前貌党坡村小区"},
    {"序号": "8", "学号": "2123310408", "姓名": "符大豪", "性别": "男", "年龄": "31", "身份证号": "460*************7211", "电话号码": "177****2626", "家庭地址": "海南省文昌市重兴镇东风村委会城东一村"},
    {"序号": "9", "学号": "2123310409", "姓名": "符日强", "性别": "男", "年龄": "22", "身份证号": "460*************9571", "电话号码": "135****7431", "家庭地址": "海南省东方市八所镇大古坡村"},
    {"序号": "10", "学号": "2123310410", "姓名": "符显影", "性别": "男", "年龄": "34", "身份证号": "460*************0013", "电话号码": "159****2262", "家庭地址": "海南省文昌市铺前镇14号"},
    {"序号": "11", "学号": "2123310411", "姓名": "何影影", "性别": "女", "年龄": "27", "身份证号": "460*************0826", "电话号码": "132****6698", "家庭地址": "海南省东方市东河镇金柄村"},
    {"序号": "12", "学号": "2123310412", "姓名": "黄繁丹", "性别": "女", "年龄": "36", "身份证号": "460*************4625", "电话号码": "185****2173", "家庭地址": "海南省保亭黎族苗族自治县什玲镇椰林村委会平土村"},
    {"序号": "13", "学号": "2123310413", "姓名": "黄礼", "性别": "男", "年龄": "17", "身份证号": "460*************5036", "电话号码": "187****5670", "家庭地址": "海南省东方市八所镇山龙南区新村59号"},
    {"序号": "14", "学号": "2123310414", "姓名": "黄耀鑫", "性别": "男", "年龄": "20", "身份证号": "460*************9618", "电话号码": "181****1690", "家庭地址": "海南省海口市琼山区龙昆南大道63栋102号"},
    {"序号": "15", "学号": "2123310415", "姓名": "纪新明", "性别": "男", "年龄": "30", "身份证号": "460*************0430", "电话号码": "139****6426", "家庭地址": "海南省三亚市崖州区崖城镇金土坡"},
    {"序号": "16", "学号": "2123310416", "姓名": "杞俊文", "性别": "男", "年龄": "32", "身份证号": "460*************6613", "电话号码": "131****4250", "家庭地址": "海南省三亚市吉阳区置地金融中心城"},
    {"序号": "17", "学号": "2123310417", "姓名": "梁敏敏", "性别": "女", "年龄": "23", "身份证号": "450*************2521", "电话号码": "172****2489", "家庭地址": "广西梧州市苍梧县岭脚镇龙濠村"},
    {"序号": "18", "学号": "2123310418", "姓名": "林格", "性别": "男", "年龄": "27", "身份证号": "460*************5124", "电话号码": "158****7877", "家庭地址": "海南省海口市海甸岛二东路广益城"},
    {"序号": "19", "学号": "2123310419", "姓名": "林士师", "性别": "男", "年龄": "31", "身份证号": "460*************5168", "电话号码": "189****2031", "家庭地址": "海南省海口市道贤里10号海口监狱局九层楼宿舍"},
    {"序号": "20", "学号": "2123310420", "姓名": "刘政见", "性别": "男", "年龄": "19", "身份证号": "460*************581X", "电话号码": "152****8623", "家庭地址": "河北省廊坊市广阳区东环路十"},
    {"序号": "21", "学号": "2123310421", "姓名": "龙仕凤", "性别": "男", "年龄": "15", "身份证号": "431*************241X", "电话号码": "186****2009", "家庭地址": "海南省儋州市一总场区东泰村二栋六号"},
    {"序号": "22", "学号": "2123310422", "姓名": "潘金麒", "性别": "女", "年龄": "37", "身份证号": "460*************3003", "电话号码": "173****4806", "家庭地址": "海南省文昌市公坡镇三洋村委会东排山6号"},
    {"序号": "23", "学号": "2123310423", "姓名": "彭思惠", "性别": "男", "年龄": "32", "身份证号": "460*************8718", "电话号码": "130****5081", "家庭地址": "海南省儋州市东逢镇加老农场"},
    {"序号": "24", "学号": "2123310424", "姓名": "汤金", "性别": "男", "年龄": "28", "身份证号": "440*************0013", "电话号码": "185****7328", "家庭地址": "海南省海口市琼山区富仁花园一区22栋"},
    {"序号": "25", "学号": "2123310425", "姓名": "杨海煌", "性别": "男", "年龄": "33", "身份证号": "533*************6151", "电话号码": "139****4935", "家庭地址": "云南省丽江市古城区大研花园大道255号501"},
    {"序号": "26", "学号": "2123310426", "姓名": "王经帅", "性别": "男", "年龄": "42", "身份证号": "460*************9870", "电话号码": "133****8259", "家庭地址": "海南省东方市八所镇皇宁村二队上宅一号"},
    {"序号": "27", "学号": "2123310427", "姓名": "王帅抽", "性别": "男", "年龄": "71", "身份证号": "460*************0369", "电话号码": "151****0837", "家庭地址": "海南省乐东黎族自治县佛罗镇白村村委会香蕉村一队60号"},
    {"序号": "28", "学号": "2123310428", "姓名": "王康荣", "性别": "男", "年龄": "83", "身份证号": "460*************5539", "电话号码": "151****6309", "家庭地址": "海南省海口市琼山区三门坡镇北斗村"},
    {"序号": "29", "学号": "2123310429", "姓名": "王萧", "性别": "男", "年龄": "45", "身份证号": "460*************0014", "电话号码": "153****4285", "家庭地址": "海南省海口市琼山区道贤路21号"},
    {"序号": "30", "学号": "2123310430", "姓名": "王姿", "性别": "女", "年龄": "34", "身份证号": "460*************2623", "电话号码": "139****2760", "家庭地址": "海南省海口市琼山区新桥路"},
    {"序号": "31", "学号": "2123310431", "姓名": "韦苗壮", "性别": "男", "年龄": "43", "身份证号": "450*************1231", "电话号码": "180****8463", "家庭地址": "广西壮族自治区崇左市扶左镇渠历村史255号"},
    {"序号": "32", "学号": "2123310432", "姓名": "书佳", "性别": "女", "年龄": "32", "身份证号": "411*************3201", "电话号码": "150****2045", "家庭地址": "河南省郑州市新郑市孟庄镇万邓村"},
    {"序号": "33", "学号": "2123310433", "姓名": "谢金豆", "性别": "男", "年龄": "56", "身份证号": "411*************0571", "电话号码": "155****4086", "家庭地址": "四川省广安市邻水县观音镇二街一组38号"},
    {"序号": "34", "学号": "2123310434", "姓名": "徐文杰", "性别": "男", "年龄": "29", "身份证号": "430*************9037", "电话号码": "147****7895", "家庭地址": "湖南省邵阳市武冈市湾头一桥5组"},
    {"序号": "35", "学号": "2123310435", "姓名": "徐嘉诚", "性别": "男", "年龄": "31", "身份证号": "441*************7113", "电话号码": "134****6618", "家庭地址": "广东省潮州市淡溪镇生产村"},
    {"序号": "36", "学号": "2123310436", "姓名": "颜景钧", "性别": "男", "年龄": "15", "身份证号": "460*************0013", "电话号码": "182****1503", "家庭地址": "海南省临高县临城镇跃进居委会跃进路星河丹堤仓库宿舍4栋110号"},
    {"序号": "37", "学号": "2123310437", "姓名": "杨家意", "性别": "男", "年龄": "19", "身份证号": "450*************1019", "电话号码": "175****4137", "家庭地址": "广西省崇左市石匠县屯镇硬关村腰屯247号"},
    {"序号": "38", "学号": "2123310438", "姓名": "杨木", "性别": "男", "年龄": "26", "身份证号": "520*************8219", "电话号码": "173****3913", "家庭地址": "贵州省铜仁市万山区茶店镇关门村三组"},
    {"序号": "39", "学号": "2123310439", "姓名": "杨昌子", "性别": "男", "年龄": "37", "身份证号": "441*************0219", "电话号码": "138****9023", "家庭地址": "广东省梅州市丰顺县汤南镇"},
    {"序号": "40", "学号": "2123310440", "姓名": "杨镇", "性别": "男", "年龄": "41", "身份证号": "460*************4411", "电话号码": "137****4062", "家庭地址": "海南省海口市琼山区滨江路河口路"},
    {"序号": "41", "学号": "2123310441", "姓名": "张福胜", "性别": "男", "年龄": "52", "身份证号": "460*************7470", "电话号码": "178****7681", "家庭地址": "海南省乐东黎族自治县志仲镇塔丰村委会塔丰七队69号"},
    {"序号": "42", "学号": "2123310442", "姓名": "张洪", "性别": "男", "年龄": "36", "身份证号": "460*************4614", "电话号码": "151****4460", "家庭地址": "海南省昌江黎族自治县石碌镇粮食内巷28号"},
    {"序号": "43", "学号": "2123310443", "姓名": "张运旺", "性别": "男", "年龄": "43", "身份证号": "460*************6411", "电话号码": "155****1865", "家庭地址": "海南省琼海市嘉积镇登仙村3队"},
    {"序号": "44", "学号": "2123310444", "姓名": "郑富桥", "性别": "女", "年龄": "25", "身份证号": "460*************4421", "电话号码": "182****1330", "家庭地址": "海南省澄迈县金江镇长安镇"},
    {"序号": "45", "学号": "2123310445", "姓名": "郑玉陵", "性别": "男", "年龄": "43", "身份证号": "460*************4415", "电话号码": "199****4603", "家庭地址": "海南省陵水黎族自治县椰林镇会针内村12号"}
]

def print_statistics(title, data, key_name, value_name):
    """通用的统计结果打印函数"""
    print(f"\n{title}:")
    print(f"{key_name.ljust(20)}| {value_name}")
    print("-" * (20 + 1 + len(value_name) + 5))
    for key, count in sorted(data.items()):
        print(f"{str(key).ljust(20)}| {count}")
    print(f"总计: {sum(data.values())}")

# 1. 按性别统计学生人数
gender_stats = {}
for student in table_data:
    gender = student["性别"]
    if gender in gender_stats:
        gender_stats[gender] += 1
    else:
        gender_stats[gender] = 1

print_statistics("1. 按性别统计学生人数", gender_stats, "性别", "人数")

# 2. 按年龄段统计学生人数
# 定义年龄段划分: 少年(0-17), 青年(18-35), 中年(36-59), 老年(60+)
age_groups = {
    "少年(0-17)": 0,
    "青年(18-35)": 0,
    "中年(36-59)": 0,
    "老年(60+)": 0
}

for student in table_data:
    age = int(student["年龄"])
    if age <= 17:
        age_groups["少年(0-17)"] += 1
    elif age <= 35:
        age_groups["青年(18-35)"] += 1
    elif age <= 59:
        age_groups["中年(36-59)"] += 1
    else:
        age_groups["老年(60+)"] += 1

print_statistics("2. 按年龄段统计学生人数", age_groups, "年龄段", "人数")

# 3. 按地区统计学生人数
# 海南省内按市县统计，外省按省份统计
region_stats = {}

for student in table_data:
    address = student["家庭地址"]
    
    # 判断是否是海南省内地址
    if address.startswith("海南省"):
        # 提取市县信息（海南省之后的第一个行政区划）
        # 去掉"海南省"前缀
        after_hainan = address[3:].strip()
        # 查找第一个"市"或"县"出现的位置
        end_index = None
        for i, char in enumerate(after_hainan):
            if char in ["市", "县", "区", "自治县"]:
                end_index = i + 1  # 包含"市"/"县"字符
                break
        if end_index:
            region = after_hainan[:end_index]
        else:
            region = "海南省其他地区"
    else:
        # 外省地址，提取省份信息
        # 查找第一个"省"或"自治区"出现的位置
        end_index = None
        for i, char in enumerate(address):
            if char in ["省", "自治区", "市"]:  # 处理直辖市如"北京市"
                end_index = i + 1  # 包含"省"/"自治区"/"市"字符
                break
        if end_index:
            region = address[:end_index]
        else:
            region = "其他省份"
    
    # 更新统计数据
    if region in region_stats:
        region_stats[region] += 1
    else:
        region_stats[region] = 1

print_statistics("3. 按地区统计学生人数", region_stats, "地区", "人数")
